package com.todo.demo.Service.impl;

import com.github.pagehelper.PageHelper;
import com.todo.demo.Dao.UserDao;
import com.todo.demo.Model.*;
import com.todo.demo.Service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service(value = "loginService")
public class LoginServiceImpl implements LoginService {
    @Autowired
    private UserDao userDao;//这里会报错，但是并不会影响

    @Override
    public int addUser(User user) {

        return userDao.insert(user);
    }

    @Override
    public int checkUserExist(User user) {
        return userDao.checkUserExist(user);
    }

    @Override
    public User getUserByName(String user) {
        return userDao.getUserByName(user);
    }

    @Override
    public int updateUserAvatar(User user) {
        return userDao.updateUserAvatar(user);
    }

    public ShareInfo getShareInfo() {
        return userDao.getShareInfo();
    }

    public int updateFormId(User user) {
        return userDao.updateFormId(user);
    }

    /*
     * 这个方法中用到了我们开头配置依赖的分页插件pagehelper
     * 很简单，只需要在service层传入参数，然后将参数传递给一个插件的一个静态方法即可；
     * pageNum 开始页数
     * pageSize 每页显示的数据条数
     * */
    @Override
    public List<User> findAllUser(int pageNum, int pageSize) {
        //将参数传给这个方法就可以实现物理分页了，非常简单。
        PageHelper.startPage(pageNum, pageSize);

        return userDao.selectUsers(pageNum, pageSize);
    }

    @Override
    public User getUserById(User user) {
        return userDao.getUserById(user);
    }

    public int addToken(KeyAndValue keyAndValue){
        return userDao.addToken(keyAndValue);
    };

    public int addMsgLog(MsgLog msgLog){
        return userDao.addMsgLog(msgLog);
    };
    public int updateAccessToken(KeyAndValueTodo keyAndValueTodo){
        return userDao.updateAccessToken(keyAndValueTodo);
    };

    public KeyAndValueTodo getAccessToken(){
        return userDao.getAccessToken();
    };
    public long selectUsersCount(){
        return userDao.selectUsersCount();
    };

    public  List<User> selectHuoyueUsers(int pageNum,int pageSize){
        return userDao.selectHuoyueUsers(pageNum,pageSize);
    };

    public   long selectHuoyueUsersCount(){
        return userDao.selectHuoyueUsersCount();
    };
}

